//
//  StatusViewModel.swift
//  weibo
//
//  Created by tomato on 2023/9/22.
//

import UIKit

class StatusViewModel: NSObject {
    var status:Status?//微博模型
    //数据处理属性
    var sourceStr:String?
    var timeStr:String?
    
    //自定义构造函数
    init(status: Status? = nil) {
        self.status = status
        //来源字符串处理
        if let s = status?.source, s.contains("\">"), s.contains("</"){
            // 获取起始光标
            let start = s.range(of: "\">")
            // 获取结束光标
            let end = s.range(of: "</")
            // 截取中间结果 ( range -> idnex 就用lowerBound / upperBound)
            let result = String(s[start!.upperBound..<end!.lowerBound])
            sourceStr = "来自: \(result)"
        }
        //时间处理
        guard let time = status?.created_at else {
            return
        }
        // 1.创建formatter
        let formatter = DateFormatter()
        // 2.设置时间的格式
        formatter.dateFormat = "EEE MMM d HH:mm:ss Z yyyy"
        // 3. 设置时间的区域(真机必须设置，否则可能不会转换成功)
        formatter.locale = Locale(identifier: "en")
        // 4.转换(转换好的时间是去除时区的时间) 2020-04-07 09:22:27 +0000
        let sinaDate = formatter.date(from: time)!
        // 计算是否是今年
        let isThisYear = sinaDateisThisYear(sinaDate: sinaDate)
        if isThisYear {
            // 日历类
            let calendar = Calendar.current
            // 今天
            if calendar.isDateInToday(sinaDate) {
                // 计算出当前日期和微博日期的秒数差值 abs 绝对值
                let s = abs(sinaDate.timeIntervalSinceNow)
                // 刚刚
                if s <= 60 {
                    timeStr = "刚刚"
                }else if s > 60 && s <= 60*60 {
                    // X分钟前
                    timeStr = "\(Int(s/60))分钟前"
                }else {
                    // X小时前
                    timeStr = "\(Int(s/(60*60)))小时前"
                }
            }else if calendar.isDateInYesterday(sinaDate){
                // 昨天, 显示的格式为 昨天 HH:mm 例如 昨天 14:14
                formatter.dateFormat = "昨天 HH:mm"
                timeStr = formatter.string(from: sinaDate)
            }else {
                // 其他, 显示的格式为 MM-dd HH:mm 例如 02-02 02:02
                formatter.dateFormat = "MM-dd HH:mm"
                timeStr = formatter.string(from: sinaDate)
            }
        }else {
            // 不是今年, 显示的格式为 yyyy-MM-dd HH:mm  例如 2015-12-12 12:12
            formatter.dateFormat = "yyyy-MM-dd HH:mm"
            timeStr = formatter.string(from: sinaDate)
        }

        
        // MARK: - 判断新浪微博的日期是否是今年
        func sinaDateisThisYear(sinaDate: Date) -> Bool{
            // 获取当前的日期
            let currentDate = Date()
            // 时间格式化
            let df = DateFormatter()
            // 指定格式
            df.dateFormat = "yyyy"
            // 通过当前的日期得到日期年的字符串
            let currentStr = df.string(from: currentDate)
            // 获取新浪微博的日期年的字符串
            let sinaStr = df.string(from: sinaDate)
            return currentStr == sinaStr
        }
    }
}
